The present invention relates to network connection maintenance and, more particularly, to a method and system for maintaining a high reliability logical connection.
Many client-server and peer-to-peer software applications require a logical connection to be maintained between hosts over an often unreliable heterogeneous network topology such as the Internet. This requirement presents a problem in that intermediate networking elements, such as firewalls, can block connection requests and data traffic transmitted on logical connections. Additionally, an undetected loss of connectivity can occur at any time due to a hardware or software failure on or between intermediate networking elements, or due to severe congestion.
The problem of a firewall blocking connection requests and data traffic has sometimes been addressed by opening the firewall to allow connection requests and data traffic having specific identifiers, for example, particular Internet Protocol (IP) addresses and Transport Control Protocol (TCP) port numbers. However, opening the firewall to such connection requests and data traffic leaves the hosts vulnerable to cloned connections initiated by cloned processes and rogue computers that spoof identifiers to gain access to the hosts and oftentimes infect them with malicious code.
The problem of undetected connectivity loss has sometimes been addressed through “keep alive” messaging. For example, some TCP implementations have one host poll another host by sending a “keep alive” message to the polled host after a connection has been idle for an idle connection interval. If the polled host fails to acknowledge the “keep alive” message within an acknowledgment interval, the connection is presumed to have been lost. While useful, known “keep alive” messaging protocols have generally not taken into account the reliability of the connection when setting the idle connection interval, resulting in connection status checks that have often been more or less frequent than warranted. Moreover, TCP “keep alive” messaging requires use of a specific communication protocol, namely TCP, between the hosts.